我是如何使用 Claude Code 每一项功能的
我使用Claude Code的所有方法大盘点。
我是 ClaudeCode 的狂热爱好者。
作为一名爱好者,我每周都会在虚拟机里运行几次, 处理个人项目。
常常配合 --dangerously-skip-permissions 来随心所欲地写代码。在工作中,我所在团队的一部分负责为工程团队构建AIIDE规则和工具,仅仅是代码生成就会消耗每月数十亿个token。
基于CLI的Agent赛道愈发拥挤:Claude Code、Gemini CLI、Codex CLI、 Cursor CLI、Copilot CLI…
感觉真正的竞争在于 Anthropic 与 OpenAI 之间。
但坦白说,当我与其他开发者交流时,他们的选择往往取决于一些表面的因素——用这个工具幸运地实现了某个功能,或者他们 喜欢的系统提示词的“调性”。
此时这些工具都已经相当不错了。我也觉得大家经常过度关注输出风格或界面。“你说得对!” 式的阿谀奉承其实并不是什么严重的缺陷,反而说明你已经深度参与其中,完全掌握了全局。
对我来说,把任务交出去,设定上下文,然后让它自己工作,只根据最后的PR成品来评估,而不是纠结过程
在连续几个月坚持使用 Claude Code之后,这篇文章总结了我对其整个生态系统的思考。我们会覆盖我使用的几乎所有功能(包括重要的但我不常使用的那些功能),
从基础的 CLAUDE.md 文件和自定义斜杠命令,到 Subagents、Hooks、GitHub Actions等强大能力。这篇文章篇幅较长,我更建议把它当作参考手册,而不是一次性读完。
● CLAUDE.md
在代码库里,要想高效使用 Claude Code,最重要的文件就是根目录下的CLAUDE.md。它是Agent的行为准则,是了解你这仓库运作方式的首要依据。
如何对待这个文件,要看具体场景。对于我的兴趣项目,我让Claude 想写什么就写什么。
在我的工作上,公司仓库Monorepo中的CLAUDE.md维护得非常严格,目前大小约为13KB(完全有可能增长到 25KB)。
• 它只记录大多30%(这个阈值比较随意)的工程师会用到的工具和 API(其他工具会在产品或库专属的Markdown文件里记录)。
• 我们甚至开始每个内部工具的文档分配最大token 数。 如果你不能简明扼要地解释你的工具,那它就还没准备好被放进 CLAUDE.md。
● 技巧与常见反模式
随着时间推移,我们形成了一套鲜明且有主见的写作哲学,来打造高效的CLAUDE.md。
- 先设限制,而不是写指南。 你的
CLAUDE.md应从小处着手,根据 Claude 常犯的错误来逐步记录相关内容。 - 别在
CLAUDE.md里到处 @ 引用文档。 如果你在别处已有大量文档,很容易想在CLAUDE.md里@这些文件。这会在每次运行时把整份文件塞进上下文窗口,导致臃肿。但如果你只是在文中提到路径,Claude 通常会忽略它。相反的,你必须向 Agent 推销 “为什么” 以及 “什么时候” 需要读这份文件:“遇到复杂用法或碰到 FooBarError 时,请参见 path/to/docs.md 获取最佳问题排查步骤。” - 不要只说“禁止”。 避免纯粹的负面约束,例如 “绝对不要使用 --foo-bar 标志” 当Agent认为它必须使用该标志时,就会左右脑互博,导致卡住。所以永远要提供可行的替代方案。
- 把 CLAUDE.md 当成强制性手段。 如果你的CLI 命令复杂又冗长,与其写长篇大论解释它们,不如写一个简单的bash 包装器,提供清晰直观的 API,然后记录这个包装器。保持
CLAUDE.md尽可能短,是迫使你精简代码库和内部工具的绝佳手段。
这是一个简化的示例
# Monorepo
## Python
- 总是...
- 使用 <command> 进行测试
... 还有10条 ...
## <内部 CLI 工具>
... 10个要点,聚焦于80%的使用场景 ...
- <使用示例>
- 总是...
- 禁止 <x>,优先使用 <Y>
对于 <复杂用法> 或 <错误>,请参阅 path/to/<tool>_docs.md
...
最后,我们会将这个文件与一个 AGENTS.md 文件保持同步,以确保与其他我们工程师可能在使用的 AI IDE 兼容。
核心要点:
把
CLAUDE.md当作一套高层次、精心策划的护栏和指引。用它来指导你在哪里需要投入更多精力来打造对 AI(和人类)更友好的工具,而不是试图把它变成一本无所不包的百科全书。
如果您正在寻找更多关于为编码助手编写 Markdown 的技巧,请参阅 “AI 无法读懂你的文档”、“AI 驱动的软件工程”,以及 “Cursor(AI IDE)的工作原理”.
● 上下文管理之压缩和清理
我建议在编码会话中至少运行一次 /context ,来了解你那 200k token 的上下文窗口是如何被使用的(即使是 Sonnet-1M,我也不相信完整的上下文窗口能被有效利用)。对我们来说,在我们的 monorepo 中,一个全新的会话基线成本大约是 20k token (10%),剩下的 180k 用于你的实际修改——而这很快就会被填满。

这是我最近一个个人项目中 /context 的截图。你可以把它想象成磁盘空间,随着你开发一个功能,它会逐渐被填满。几分钟或几小时后,你就需要清除消息(紫色部分)来腾出空间继续工作。

CCometixLine 超绝观测 Context Window
三个主要的工作流程:
- /compact (避免使用) 我尽可能避免使用这个命令。它的自动压缩过程不透明、容易出错,而且优化得不好。
- /clear + /catchup (简单重启) 这是我的默认重启方式。我用
/clear清除状态,然后运行一个自定义的/catchup命令,让 Claude 读取我当前 git 分支中所有已更改的文件。 - “记录并清除” (复杂重启) 用于大型任务。我让 Claude 把它的计划和进展输出到一个
.md文件中,然后用/clear清除上下文,接着通过让它读取那个.md文件来开始一个新的会话并继续工作。
核心要点:
不要相信自动压缩。对简单的重启使用
/clear,对复杂任务使用“记录并清除”的方法来创建持久的外部“记忆”。